/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Detalle_producto.java
 *
 * Created on 15/06/2009, 03:04:32 AM
 */

package General;
import Control.Conexion;
import java.util.Vector;
import Compras.Nuevo_comprobante;
import Ventas.Nuevo_comprobanteV;
import javax.swing.JOptionPane;
import java.awt.Color;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;
import Control.MiModelo;
import Control.MiModeloVentaBoleta;
/**
 *
 * @author GAMA
 */
public class Detalle_producto_compra extends javax.swing.JFrame {
    Nuevo_comprobante comprobante_compra;
    Nuevo_comprobanteV comprobante_venta;
     Vector <Vector> d_tabla_anterior_compra=new Vector();
   
    /** Creates new form Detalle_producto */
    public Detalle_producto_compra(Nuevo_comprobante comprobante_compra) {
        initComponents();

        cargar_todos_productos_disponibles_venta();

        this.comprobante_compra=comprobante_compra;
       
        inicializar_campos_no_editables();
       cargar_tipo_servicios();
        cargar_categorias();
        

    }
   
   public void cargar_tipo_servicios(){
        
    Conexion c=new Conexion();
    Vector <String> vtipo_servicio;
    vtipo_servicio=c.cargar_tipo_servicio_combobox();
       for(int i=0;i<vtipo_servicio.size();i++){
           cmbServicioTipo.addItem(vtipo_servicio.get(i));
       }
    }

   public void cargar_categorias(){
    Conexion c=new Conexion();
    Vector <String> vcategoria;
    vcategoria=c.cargar_categorias_combobox();
       for(int i=0;i<vcategoria.size();i++){
           cmbCategoria.addItem(vcategoria.get(i));
           cmbCategoria_en_servicio.addItem(vcategoria.get(i));
       }
    }
    public void visibleInicial(boolean valor){
        this.getContentPane().removeAll();
        
        pnlSeleccion.setSize(416, 333);
        this.getContentPane().add(pnlSeleccion);
        pnlSeleccion.repaint();
        pnlSeleccion.setVisible(true);
     
    }
    public void cargar_productos_por_categoria_Servicio(){
        Conexion c=new Conexion();
        String categoria=cmbCategoria_en_servicio.getSelectedItem().toString();
        Vector <String> vproductos=c.cargar_productos_descripcion_por_categoria(categoria);
        this.cmbServicioProducto.removeAllItems();
        for(int i=0;i<vproductos.size();i++){
            cmbServicioProducto.addItem(vproductos.get(i));
        }
    }
    public void cargar_productos_por_categoria(){
        Conexion c=new Conexion();
        String categoria=cmbCategoria.getSelectedItem().toString();
        Vector <String> vproductos=c.cargar_productos_descripcion_por_categoria(categoria);
        this.cmbproducto.removeAllItems();
        lblstock.setText("");
        lblpreciounitario.setText("");
        for(int i=0;i<vproductos.size();i++){
            this.cmbproducto.addItem(vproductos.get(i));
          
        }
        
    }

     public void cargar_todos_productos_disponibles_venta(){
        Conexion c=new Conexion();
        Vector <String> vproductos=c.cargar_productos_disponibles();
        this.cmbproducto.removeAllItems();
        for(int i=0;i<vproductos.size();i++){
            this.cmbproducto.addItem(vproductos.get(i));
        }
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pnlAgregarProducto = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        cmbproducto = new javax.swing.JComboBox();
        txtprecio = new javax.swing.JTextField();
        lblcantidad = new javax.swing.JLabel();
        lblprecio = new javax.swing.JLabel();
        txtcantidad = new javax.swing.JTextField();
        btnAceptar = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        lblstock = new javax.swing.JLabel();
        lblpreciounitario = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        txtguia = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        cmbCategoria = new javax.swing.JComboBox();
        pnlAgregarServicio = new javax.swing.JPanel();
        cmbServicioProducto = new javax.swing.JComboBox();
        jLabel6 = new javax.swing.JLabel();
        txtServicioGuia = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        cmbServicioTipo = new javax.swing.JComboBox();
        btnAceptar1 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        txtServicioCantidad = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        txtServicioPrecio = new javax.swing.JTextField();
        jLabel11 = new javax.swing.JLabel();
        cmbCategoria_en_servicio = new javax.swing.JComboBox();
        pnlSeleccion = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        cmbSeleccion = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();

        pnlAgregarProducto.setMinimumSize(new java.awt.Dimension(416, 333));
        pnlAgregarProducto.setPreferredSize(new java.awt.Dimension(416, 333));
        pnlAgregarProducto.setLayout(null);

        jLabel1.setText("Categoría:");
        pnlAgregarProducto.add(jLabel1);
        jLabel1.setBounds(110, 60, 60, 20);

        cmbproducto.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbproductoItemStateChanged(evt);
            }
        });
        pnlAgregarProducto.add(cmbproducto);
        cmbproducto.setBounds(180, 100, 170, 20);

        txtprecio.addCaretListener(new javax.swing.event.CaretListener() {
            public void caretUpdate(javax.swing.event.CaretEvent evt) {
                txtprecioCaretUpdate(evt);
            }
        });
        txtprecio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtprecioActionPerformed(evt);
            }
        });
        pnlAgregarProducto.add(txtprecio);
        txtprecio.setBounds(180, 220, 100, 20);

        lblcantidad.setText("Cantidad a adquirir:");
        pnlAgregarProducto.add(lblcantidad);
        lblcantidad.setBounds(60, 180, 110, 20);

        lblprecio.setText("Costo Unitario (S/.):");
        pnlAgregarProducto.add(lblprecio);
        lblprecio.setBounds(60, 220, 120, 20);

        txtcantidad.addCaretListener(new javax.swing.event.CaretListener() {
            public void caretUpdate(javax.swing.event.CaretEvent evt) {
                txtcantidadCaretUpdate(evt);
            }
        });
        txtcantidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtcantidadActionPerformed(evt);
            }
        });
        pnlAgregarProducto.add(txtcantidad);
        txtcantidad.setBounds(180, 180, 100, 20);

        btnAceptar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Aceptar16.gif"))); // NOI18N
        btnAceptar.setMnemonic('A');
        btnAceptar.setText("Aceptar");
        btnAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAceptarActionPerformed(evt);
            }
        });
        pnlAgregarProducto.add(btnAceptar);
        btnAceptar.setBounds(80, 280, 100, 25);

        jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Cancelar16.gif"))); // NOI18N
        jButton2.setMnemonic('C');
        jButton2.setText("Cancelar");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        pnlAgregarProducto.add(jButton2);
        jButton2.setBounds(220, 280, 100, 25);

        jLabel5.setText("Stock Actual: ");
        pnlAgregarProducto.add(jLabel5);
        jLabel5.setBounds(90, 140, 70, 20);

        lblstock.setFont(new java.awt.Font("Tahoma", 1, 12));
        pnlAgregarProducto.add(lblstock);
        lblstock.setBounds(180, 140, 70, 20);

        lblpreciounitario.setFont(new java.awt.Font("Tahoma", 1, 12));
        pnlAgregarProducto.add(lblpreciounitario);
        lblpreciounitario.setBounds(290, 140, 0, 0);

        jLabel2.setText("Guía:");
        pnlAgregarProducto.add(jLabel2);
        jLabel2.setBounds(130, 20, 25, 30);
        pnlAgregarProducto.add(txtguia);
        txtguia.setBounds(180, 20, 70, 20);

        jLabel10.setText("Producto:");
        pnlAgregarProducto.add(jLabel10);
        jLabel10.setBounds(110, 100, 60, 20);

        cmbCategoria.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbCategoriaItemStateChanged(evt);
            }
        });
        pnlAgregarProducto.add(cmbCategoria);
        cmbCategoria.setBounds(180, 60, 160, 20);

        pnlAgregarServicio.setPreferredSize(new java.awt.Dimension(416, 333));
        pnlAgregarServicio.setLayout(null);

        cmbServicioProducto.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbServicioProductoItemStateChanged(evt);
            }
        });
        pnlAgregarServicio.add(cmbServicioProducto);
        cmbServicioProducto.setBounds(170, 180, 120, 20);

        jLabel6.setText("Guía:");
        pnlAgregarServicio.add(jLabel6);
        jLabel6.setBounds(120, 20, 40, 20);
        pnlAgregarServicio.add(txtServicioGuia);
        txtServicioGuia.setBounds(170, 20, 70, 20);

        jLabel7.setText("Tipo de Servicio:");
        pnlAgregarServicio.add(jLabel7);
        jLabel7.setBounds(70, 100, 90, 20);

        pnlAgregarServicio.add(cmbServicioTipo);
        cmbServicioTipo.setBounds(170, 100, 130, 20);

        btnAceptar1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Aceptar16.gif"))); // NOI18N
        btnAceptar1.setMnemonic('A');
        btnAceptar1.setText("Aceptar");
        btnAceptar1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAceptar1ActionPerformed(evt);
            }
        });
        pnlAgregarServicio.add(btnAceptar1);
        btnAceptar1.setBounds(70, 270, 100, 25);

        jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Cancelar16.gif"))); // NOI18N
        jButton3.setMnemonic('C');
        jButton3.setText("Cancelar");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        pnlAgregarServicio.add(jButton3);
        jButton3.setBounds(200, 270, 100, 25);

        jLabel4.setText("Nombre producto:");
        pnlAgregarServicio.add(jLabel4);
        jLabel4.setBounds(60, 180, 90, 14);

        jLabel8.setText("Cantidad:");
        pnlAgregarServicio.add(jLabel8);
        jLabel8.setBounds(100, 60, 50, 20);
        pnlAgregarServicio.add(txtServicioCantidad);
        txtServicioCantidad.setBounds(170, 60, 70, 20);

        jLabel9.setText("Precio:");
        pnlAgregarServicio.add(jLabel9);
        jLabel9.setBounds(110, 220, 33, 14);
        pnlAgregarServicio.add(txtServicioPrecio);
        txtServicioPrecio.setBounds(170, 220, 70, 20);

        jLabel11.setText("Categoría:");
        pnlAgregarServicio.add(jLabel11);
        jLabel11.setBounds(100, 140, 60, 14);

        cmbCategoria_en_servicio.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbCategoria_en_servicioItemStateChanged(evt);
            }
        });
        pnlAgregarServicio.add(cmbCategoria_en_servicio);
        cmbCategoria_en_servicio.setBounds(170, 140, 130, 20);

        setTitle("Detalle producto");
        setIconImage(new ImageIcon(this.getClass().getResource("/imagenes/icono.gif")).getImage());
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });
        getContentPane().setLayout(null);

        pnlSeleccion.setPreferredSize(new java.awt.Dimension(416, 333));
        pnlSeleccion.setLayout(null);

        jLabel3.setText("Seleccione lo que desea agregar: ");
        pnlSeleccion.add(jLabel3);
        jLabel3.setBounds(20, 100, 170, 14);

        cmbSeleccion.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Producto", "Servicio" }));
        pnlSeleccion.add(cmbSeleccion);
        cmbSeleccion.setBounds(200, 100, 140, 20);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Aceptar16.gif"))); // NOI18N
        jButton1.setText("Aceptar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        pnlSeleccion.add(jButton1);
        jButton1.setBounds(80, 150, 100, 25);

        jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Cancelar16.gif"))); // NOI18N
        jButton4.setText("Cancelar");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        pnlSeleccion.add(jButton4);
        jButton4.setBounds(220, 150, 100, 25);

        getContentPane().add(pnlSeleccion);
        pnlSeleccion.setBounds(0, 0, 410, 330);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-424)/2, (screenSize.height-367)/2, 424, 367);
    }// </editor-fold>//GEN-END:initComponents
 public void boton_aceptar_servicio(){
     txtServicioCantidad.setBackground(Color.WHITE);
     txtServicioPrecio.setBackground(Color.WHITE);
     cmbServicioProducto.setBackground(Color.WHITE);
        String guia="";
        String producto="";
        
        String seleccion=cmbSeleccion.getSelectedItem().toString();


        System.out.println("Mostrar:"+producto);
        int cantidad=-1;
        float precio=-1;
        guia=txtServicioGuia.getText();
        try{
        cantidad=Integer.parseInt(txtServicioCantidad.getText());
        producto=cmbServicioProducto.getSelectedItem().toString();
        precio=Float.parseFloat(txtServicioPrecio.getText());


                   //verificar si el producto ya esta en el comprobante
            DefaultTableModel modelo=comprobante_compra.getModelconsulta();
            boolean encontrado=false;
                for(int i=0;i<modelo.getRowCount();i++){
                    if(producto.equals(modelo.getValueAt(i, 2))) encontrado=true;
                }
            if(!encontrado){
                boolean permitido=true;
                if(cantidad==0){
                    JOptionPane.showMessageDialog(this,"La cantidad a adquirir no puede ser cero","Información",JOptionPane.WARNING_MESSAGE);
                    permitido=false;
                }
                if(precio==0){
                    JOptionPane.showMessageDialog(this,"El costo unitario no puede ser cero","Información",JOptionPane.WARNING_MESSAGE);
                    permitido=false;
                }
                if(txtcantidad.getForeground()==Color.RED){ //error de entero valido pero negativo
                    JOptionPane.showMessageDialog(this,"La cantidad a adquirir no puede ser menor que cero","Información",JOptionPane.WARNING_MESSAGE);
                    permitido=false;
                }

                if(txtprecio.getForeground()==Color.RED){ //error de float valido pero negativo
                    JOptionPane.showMessageDialog(this,"El costo unitario no puede ser menor que cero","Información",JOptionPane.WARNING_MESSAGE);
                    permitido=false;
                }


                if(permitido){
                String visto_precio=String.valueOf(precio);
                int ubi_punto;
                ubi_punto=visto_precio.indexOf(".");
                System.out.println("visto:"+visto_precio);
                if(ubi_punto!=-1){
                int corte=visto_precio.length()-ubi_punto;

                precio=Float.parseFloat(visto_precio.substring(0,ubi_punto+corte));
                }else{
                    precio=Float.parseFloat(visto_precio);
                }
                
                Vector aux=new Vector();
                aux.add(cantidad);
                aux.add(producto);
                aux.add(precio);

                this.d_tabla_anterior_compra.add(aux);
                this.comprobante_compra.cargar_datos_detalle_producto(guia,cantidad, producto, precio);
                comprobante_compra.habilitarBoton(true);
                limpiar_campos();
                this.setVisible(false);
                }
            }
            else{
                     JOptionPane.showMessageDialog(this,"El producto ya existe en el comprobante","Información",JOptionPane.WARNING_MESSAGE);
            }

        
        }catch(Exception e){
            //if(cantidad==-1) txtcantidad.setBackground(Color.PINK);
            /*try{
                precio=Float.parseFloat(txtprecio.getText());
            }catch(Exception ev){
                if(precio==-1)txtprecio.setBackground(Color.PINK);
            }*/
            
            if(txtServicioCantidad.getText().equals("") ){
                txtServicioCantidad.setBackground(new Color(249,232,232));
            JOptionPane.showMessageDialog(this,"Ingrese cantidad de servicio","No se puede agregar servicio",JOptionPane.ERROR_MESSAGE);
            }else{
                if(txtServicioPrecio.getText().equals("")){
                    txtServicioPrecio.setBackground(new Color(249,232,232));
                    JOptionPane.showMessageDialog(this,"Ingrese precio de servicio","No se puede agregar servicio",JOptionPane.ERROR_MESSAGE);
                }else{
                JOptionPane.showMessageDialog(this,"Formato de datos erróneo","Error",JOptionPane.ERROR_MESSAGE);
                }
                
            }
           
        }




    }
    public void boton_aceptar(){
        cmbproducto.setBackground(Color.WHITE);
        txtcantidad.setBackground(Color.WHITE);
        txtprecio.setBackground(Color.WHITE);
        String guia="";
        String producto="";
        
        
        
        System.out.println("Mostrar:"+producto);
        int cantidad=-1;
        float precio=-1;
        guia=txtguia.getText();
        try{
        
        producto=cmbproducto.getSelectedItem().toString();
        cantidad=Integer.parseInt(txtcantidad.getText());
        if(txtprecio.isVisible()){
        precio=Float.parseFloat(txtprecio.getText());
        }
        else{
            precio=Float.parseFloat(lblpreciounitario.getText());
        }

        
            //verificar si el producto ya esta en el comprobante
            DefaultTableModel modelo=comprobante_compra.getModelconsulta();
            boolean encontrado=false;
                for(int i=0;i<modelo.getRowCount();i++){
                    if(producto.equals(modelo.getValueAt(i, 2))) encontrado=true;
                }
            if(!encontrado){
                boolean permitido=true;
                if(cantidad==0){
                    JOptionPane.showMessageDialog(this,"La cantidad a adquirir no puede ser cero","Información",JOptionPane.WARNING_MESSAGE);
                    permitido=false;
                }
                if(precio==0){
                    JOptionPane.showMessageDialog(this,"El costo unitario no puede ser cero","Información",JOptionPane.WARNING_MESSAGE);
                    permitido=false;
                }
                if(txtcantidad.getForeground()==Color.RED){ //error de entero valido pero negativo
                    JOptionPane.showMessageDialog(this,"La cantidad a adquirir no puede ser menor que cero","Información",JOptionPane.WARNING_MESSAGE);
                    permitido=false;
                }

                if(txtprecio.getForeground()==Color.RED){ //error de float valido pero negativo
                    JOptionPane.showMessageDialog(this,"El costo unitario no puede ser menor que cero","Información",JOptionPane.WARNING_MESSAGE);
                    permitido=false;
                }


                if(permitido){
                String visto_precio=String.valueOf(precio);
                int ubi_punto;
                ubi_punto=visto_precio.indexOf(".");               
                if(ubi_punto!=-1){
                int corte=visto_precio.length()-ubi_punto;

                precio=Float.parseFloat(visto_precio.substring(0,ubi_punto+corte));
                }else{
                    precio=Float.parseFloat(visto_precio);
                }
                Vector aux=new Vector();
                aux.add(guia);
                aux.add(cantidad);
                aux.add(producto);
                aux.add(precio);

                this.d_tabla_anterior_compra.add(aux);
                this.comprobante_compra.cargar_datos_detalle_producto(guia, cantidad, producto, precio);
                comprobante_compra.habilitarBoton(true);
                limpiar_campos();
                this.setVisible(false);
                }
            }
            else{
                     JOptionPane.showMessageDialog(this,"El producto ya existe en el comprobante","Información",JOptionPane.WARNING_MESSAGE);
            }

        

        }catch(Exception e){
 
            
               if(txtcantidad.getText().equals("")){
                txtcantidad.setBackground(new Color(249,232,232));
                JOptionPane.showMessageDialog(this,"Ingrese cantidad de producto","No se puede agregar artículo",JOptionPane.ERROR_MESSAGE);

                }else{
                    if(txtprecio.getText().equals("")){
                        txtprecio.setBackground(new Color(249,232,232));
                        JOptionPane.showMessageDialog(this,"Ingrese precio de producto","No se puede agregar artículo",JOptionPane.ERROR_MESSAGE);
                    }else{
                    JOptionPane.showMessageDialog(this,"Formato de datos erróneo","Error",JOptionPane.ERROR_MESSAGE);
                    }
                }
          
            
        }



        
        
    }
    private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAceptarActionPerformed
        // TODO add your handling code here:
        
        boton_aceptar();
        
}//GEN-LAST:event_btnAceptarActionPerformed
public void eliminar_compra_elemento_en_anterior(int fila){
    d_tabla_anterior_compra.removeElementAt(fila);
}
    public Vector <Vector> devolver_tabla_compra_anterior()
{
    return this.d_tabla_anterior_compra;
}  

    private void txtcantidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtcantidadActionPerformed
        // TODO add your handling code here:
     
            this.boton_aceptar();
     
    }//GEN-LAST:event_txtcantidadActionPerformed

    private void cmbproductoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmbproductoItemStateChanged
        // TODO add your handling code here:
        if(evt.getStateChange()==1){
            inicializar_campos_no_editables();
        }
    }//GEN-LAST:event_cmbproductoItemStateChanged
//metodo para inicializar el vector d_tabla_anterior_compra procedente de la orden de modificacion de algun comprobante que ya posee detalles de compra en un MiModelo de DefaultTableModel
    public void en_modificar_compra_cargar_data_inicial(MiModelo detalle){
    for (int i=0;i<detalle.getRowCount();i++){
        Vector fil =new Vector();
        fil.add(detalle.getValueAt(i, 0));
        fil.add(detalle.getValueAt(i, 1));
        fil.add(detalle.getValueAt(i, 2));
        this.d_tabla_anterior_compra.add(fil);
    }
    System.out.println("Componentes tabla_modificar: "+detalle.getRowCount());
    
}

public void en_modificar_venta_cargar_data_inicial(MiModeloVentaBoleta detalle){
    for (int i=0;i<detalle.getRowCount();i++){
        Vector fil =new Vector();
        fil.add(detalle.getValueAt(i, 0));
        fil.add(detalle.getValueAt(i, 1));
        fil.add(detalle.getValueAt(i, 2));      
    }
    System.out.println("Componentes tabla_modificar: "+detalle.getRowCount());

}
   public void inicializar_campos_no_editables(){
         Conexion c=new Conexion();
        String producto=this.cmbproducto.getSelectedItem().toString();
        
        lblstock.setForeground(Color.BLACK);
            //consultar stock de producto
            int stock=c.retornar_stock_producto(producto);
         
                if(stock==0 ){
                    lblstock.setForeground(Color.RED);
                }

                lblstock.setText(""+stock);
        

}
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        // TODO add your handling code here:
     //   this.setVisible(false);
        limpiar_campos();
        this.getContentPane().removeAll();
        pnlSeleccion.setSize(416, 333);
        this.getContentPane().add(pnlSeleccion);
        pnlSeleccion.repaint();
        pnlSeleccion.setVisible(true);

    }//GEN-LAST:event_jButton2ActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        // TODO add your handling code here:
         this.setVisible(false);
        limpiar_campos();
    }//GEN-LAST:event_formWindowClosing

    private void txtprecioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtprecioActionPerformed
        // TODO add your handling code here:
        boton_aceptar();       
    }//GEN-LAST:event_txtprecioActionPerformed

    private void txtcantidadCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_txtcantidadCaretUpdate
        // TODO add your handling code here:
          String texto=this.txtcantidad.getText();
          char [] elemento=texto.toCharArray();
          boolean valido=true;

          for(int i=0;i<elemento.length;i++){
              if(Character.isLetter(elemento[i])){
                  valido=false;
              }
              if(elemento[i]=='-'){
                  valido=false;
              }
          }
          try{
              Integer.parseInt(txtcantidad.getText());
          }catch(Exception e){
              valido=false;
          }

          if(!valido){
              txtcantidad.setForeground(Color.RED);

          }else{
              txtcantidad.setForeground(Color.BLACK);
          }
    }//GEN-LAST:event_txtcantidadCaretUpdate

    private void txtprecioCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_txtprecioCaretUpdate
        // TODO add your handling code here:

          String texto=this.txtprecio.getText();
          char [] elemento=texto.toCharArray();
          boolean valido=true;

          for(int i=0;i<elemento.length;i++){
              if(Character.isLetter(elemento[i])){
                  valido=false;
              }
              if(elemento[i]=='-'){
                  valido=false;
              }
          }

          try{
            Float.parseFloat(texto);
          }catch(Exception e){
             valido=false;
          }
          if(!valido){
              txtprecio.setForeground(Color.RED);
          }else{
              txtprecio.setForeground(Color.BLACK);
          }

    }//GEN-LAST:event_txtprecioCaretUpdate

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        this.getContentPane().removeAll();
        if(cmbSeleccion.getSelectedItem().toString().equals("Producto")){
        pnlAgregarProducto.setSize(416, 333);
        this.getContentPane().add(pnlAgregarProducto);
        pnlAgregarProducto.repaint();
        pnlAgregarProducto.setVisible(true);
        }else{

        pnlAgregarServicio.setSize(416, 333);
        this.getContentPane().add(pnlAgregarServicio);
        
        pnlAgregarServicio.repaint();
        pnlAgregarServicio.setVisible(false);
        pnlAgregarServicio.setVisible(true);
        }

    }//GEN-LAST:event_jButton1ActionPerformed

    private void cmbServicioProductoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmbServicioProductoItemStateChanged
        // TODO add your handling code here:
    }//GEN-LAST:event_cmbServicioProductoItemStateChanged

    private void btnAceptar1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAceptar1ActionPerformed
        // TODO add your handling code here:
        boton_aceptar_servicio();
    }//GEN-LAST:event_btnAceptar1ActionPerformed

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        // TODO add your handling code here:
        //this.setVisible(false);
        limpiar_campos_Servicio();
        this.getContentPane().removeAll();

        pnlSeleccion.setSize(416, 333);
        this.getContentPane().add(pnlSeleccion);
        pnlSeleccion.repaint();
        pnlSeleccion.setVisible(true);

    }//GEN-LAST:event_jButton3ActionPerformed

    private void cmbCategoriaItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmbCategoriaItemStateChanged
        // TODO add your handling code here:
        cargar_productos_por_categoria();
    }//GEN-LAST:event_cmbCategoriaItemStateChanged

    private void cmbCategoria_en_servicioItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cmbCategoria_en_servicioItemStateChanged
        // TODO add your handling code here:
       cargar_productos_por_categoria_Servicio();
    }//GEN-LAST:event_cmbCategoria_en_servicioItemStateChanged

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
        // TODO add your handling code here:
        this.setVisible(false);
    }//GEN-LAST:event_jButton4ActionPerformed

    public void limpiar_campos(){
      if(cmbproducto.getItemCount()!=0){
        cmbproducto.setSelectedIndex(0);
      }
    txtcantidad.setText("");
    txtcantidad.setBackground(Color.WHITE);
    
    txtprecio.setText("");
    txtprecio.setBackground(Color.WHITE);
    


}

     public void limpiar_campos_Servicio(){
    if(cmbCategoria_en_servicio.getItemCount()!=0){
         cmbCategoria_en_servicio.setSelectedIndex(0);
    }

    txtServicioCantidad.setText("");
    txtServicioCantidad.setBackground(Color.WHITE);
   
    txtServicioPrecio.setText("");
    txtServicioPrecio.setBackground(Color.WHITE);
    
    
     }
public void habilitar_precio(boolean  habilitar){
    txtprecio.setEnabled(habilitar);
}
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
             //   new Detalle_producto().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAceptar;
    private javax.swing.JButton btnAceptar1;
    private javax.swing.JComboBox cmbCategoria;
    private javax.swing.JComboBox cmbCategoria_en_servicio;
    private javax.swing.JComboBox cmbSeleccion;
    private javax.swing.JComboBox cmbServicioProducto;
    private javax.swing.JComboBox cmbServicioTipo;
    private javax.swing.JComboBox cmbproducto;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLabel lblcantidad;
    private javax.swing.JLabel lblprecio;
    private javax.swing.JLabel lblpreciounitario;
    private javax.swing.JLabel lblstock;
    private javax.swing.JPanel pnlAgregarProducto;
    private javax.swing.JPanel pnlAgregarServicio;
    private javax.swing.JPanel pnlSeleccion;
    private javax.swing.JTextField txtServicioCantidad;
    private javax.swing.JTextField txtServicioGuia;
    private javax.swing.JTextField txtServicioPrecio;
    private javax.swing.JTextField txtcantidad;
    private javax.swing.JTextField txtguia;
    private javax.swing.JTextField txtprecio;
    // End of variables declaration//GEN-END:variables

}
